var path = require("path");
var managersDAO = require(path.join(process.cwd(), "dao/ManagerDAO"));
var Password = require("node-php-password");
var logger = require('../modules/logger').logger();


/**
 * 获取所有管理员
 * @param  {[type]}   conditions 查询条件
 * 查询条件统一规范
 * conditions
	{
		"query" : 关键词查询,
		"pagenum" : 页数,
		"pagesize" : 每页长度
	}
 * @param  {Function} cb         回调函数
 */
module.exports.getAllManagers = function (conditions, cb) {


	if (!conditions.pagenum) return cb("pagenum 参数不合法");
	if (!conditions.pagesize) return cb("pagesize 参数不合法");


	// 通过关键词获取管理员数量
	managersDAO.countByKey(conditions["query"], function (err, count) {
		key = conditions["query"];
		pagenum = parseInt(conditions["pagenum"]);
		pagesize = parseInt(conditions["pagesize"]);

		pageCount = Math.ceil(count / pagesize);
		offset = (pagenum - 1) * pagesize;
		if (offset >= count) {
			offset = count;
		}
		limit = pagesize;

		managersDAO.findByKey(key, offset, limit, function (err, managers) {
			var retManagers = [];
			for (idx in managers) {
				var manager = managers[idx];
				var username = manager.role_name;
				// if(!manager.role_id) {
				// 	role_name = "超级管理员"
				// }
				retManagers.push({
					"id": manager.id,
					"username": manager.username,
					"password": manager.password,
					"mg_state": 1
				});
			}
			var resultDta = {};
			resultDta["total"] = count;
			resultDta["pagenum"] = pagenum;
			resultDta["users"] = retManagers;
			cb(err, resultDta);
		});
	});
}

/**
 * 管理员登录
 * @param  {[type]}   username 用户名
 * @param  {[type]}   password 密码
 * @param  {Function} cb       回调
 */
module.exports.login = function (username, password, cb) {
	managersDAO.findOne({ "username": username }, function (err, manager) {
		if (err || !manager) return cb("用户名不存在");

		if (manager.role_id < 0) {
			return cb("该用户没有权限登录");
		}

		// if (manager.role_id != 0 && manager.mg_state != 1) {
		// 	return cb("该用户已经被禁用");
		// }

		if (Password.verify(password, manager.password)) {
			cb(
				null,
				{
					"user_id": manager.user_id,
					"username": manager.username,
					"rid": manager.role_id,
					"password": manager.password,
				}
			);
		} else {
			return cb("密码错误");
		}
	});
}

/**
 * 通过管理员 ID 获取管理员信息
 * 
 * @param  {[type]}   id 管理员 ID
 * @param  {Function} cb 回调函数
 */
module.exports.getManager = function (id, cb) {
	managersDAO.show(id, function (err, manager) {
		if (err) return cb(err);
		if (!manager) return cb("该用户不存在");
		cb(
			null,
			{
				"id": manager.user_id,
				"rid": manager.role_id,
				"username": manager.username,
			}
		);
	});
}
